package cn.aimee.webviewjsdemo;

import android.view.ViewGroup;
import android.webkit.WebView;

/**
 * webview工具类
 * @author: aimee
 * @time: 2021\12\21 0021
 */
public class WebViewUtil {

    public void onResume(WebView webView) {
        if (null != webView) {
            //激活WebView为活跃状态，能正常执行网页的响应
            webView.onResume();
            //恢复pauseTimers状态
            webView.resumeTimers();
        }
    }

    public void onPause(WebView webView) {
        if (null != webView) {
            //当页面被失去焦点被切换到后台不可见状态，需要执行onPause
            //通知内核尝试停止所有处理，如动画和地理位置，但是不能停止Js
            webView.onPause();
            //当应用程序(存在webview)被切换到后台时，这个方法不仅仅针对当前的webview而是全局的全应用程序的webview
            //它会暂停所有webview的layout,parsing,javascripttimer,降低CPU功耗
            //可以全局停止Js，调用webView.onResume来恢复
            webView.pauseTimers();
        }
    }

    /**
     * 销毁WebView
     * @param webView
     */
    public void destroy(WebView webView) {
        if (null != webView) {
            webView.loadDataWithBaseURL(null,"" , "text/html", "utf-8", null);

            //消除当前webview访问的历史记录(只会是webview访问历史记录里的所有记录除了当前访问记录)
            webView.clearHistory();

            //销毁webview
            //在关闭了Activity时，如果webview的音乐或视频还在播放，就必须销毁webview
            //但是注意：webview调用destroy时，webview仍绑定在Activity上
            //这是由于自定义webview构建时传入了该Activity的context对象
            //因此需要先从父容器中移除webview，然后再销毁webview
            ((ViewGroup)webView.getParent()).removeView(webView);

            webView.destroy();
            webView = null;
        }
    }

}